import authCheckApp from './authCheckApp'

/**
 * 这是取消按钮的回调
 * 
 * @callback cancalCallback
 */
/**
 * 这是确定按钮的回调
 * 
 * @callback confirmCallback
 */

/**
 * 唤起手机确认框 拥有点击回调
 * @since 1.0.0
 * @param {Object} obj - 包含了一些弹窗的信息
 * @param {string} obj.message 弹窗中的信息
 * @param {string} obj.title 弹窗的标题
 * @param {string} obj.btnName 按钮名称
 * @param {Object} obj.btn - 确定按钮和取消按钮的回调
 * @param {cancalCallback} obj.btn[0] 取消按钮回调
 * @param {confirmCallback} obj.btn[1] 确定按钮回调
 * @example
 * 
 * confirm({
 *   message: '弹窗信息',
 *   title: '弹窗标题',
 *   btnName: '按钮名称',
 *   btn: {
 *      '0'() {
 *          console.log('点击了取消按钮')
 *      },
 *      '1'() {
 *          console.log('点击了确定按钮')
 *      }
 *  }
 * })
 */
function confirm(obj) {
    return new Promise((reslove, reject) => {
        authCheckApp()
            .then(success => {
                // 发起请求
                window.WebViewJavascriptBridge.callHandler('confirm', {
                    'message': obj.message,
                    'title': obj.title,
                    'btnName': obj.btnName
                }, (response) => {
                    if (typeof response === 'string') {
                        response = JSON.parse(response)
                    }
                    let btnIndex = response.result.clickIndex
                    obj.btn[btnIndex]()
                })
            }).catch(err => {
                reject(err)
            })
    })
}

export default confirm